/*
 * Regle.c
 *
 *  Created on: Feb 5, 2012
 *      Author: xhu
 */
#include <stdio.h>
#include <stdlib.h>
#include<unistd.h>  //sleep

#include <sys/msg.h>// boite aux lettres
#include "config.h"
#include "decision.h"
#define TEMPO_REGLE 1
void TRegle(){
	int run;
	int result;
	MsgCapteur msg_capt_r;
	int lengthMsg=sizeof(MsgCapteur)-sizeof(long);
	run=1;
	printf("TRegle : started\n");
	while(run)
	{
		//printf("TRegle : motor\n");
		result = msgrcv(msgQCapteurUpdate, (void *) &msg_capt_r,lengthMsg,0, MSG_NOERROR | IPC_NOWAIT);
		if(result<lengthMsg)
		{
		}
		else
		{
			printf("TRegle : receive msg type MsgCapteur\n");
			if(msg_capt_r.type==4)//fin
			{
				run=0;
			}
			else if(msg_capt_r.type==1)//msg error
			{
				//show error msg
				printf("erreur de capteur : %s \n",msg_capt_r.idCapteur);
			}
			else
			{
				//normal fonction
				printf("msg: idCapteur %s  valeur %f\n", msg_capt_r.idCapteur,msg_capt_r.valeur);

				if (getCapteurTabIndex(msg_capt_r.idCapteur)>=0) {
					printf("tableau mise a jour\n");
					pTabCapteur[getCapteurTabIndex(msg_capt_r.idCapteur)].valeur = msg_capt_r.valeur;
				}else {
					printf("idCapteur invalid\n");
				}

				decide();
			}
		}
		sleep(TEMPO_REGLE);
	}
	printf("TRegle : *******************************end\n");
	exit(0);

}
